package com.oro.domain;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.Transient;

/**
 * Entity implementation class for Entity: IndirizzoAU
 * 
 */
@Entity
public class IndirizzoAU extends Indirizzo implements Serializable {

	@Transient
	public static final String ACT = "ACT";

	@Transient
	private static final List<String> australianStates = new ArrayList<String>() {
		private static final long serialVersionUID = 1L;
		{
			add(ACT);
			add(NSW);
			add(Vic);
			add(Qld);
			add(SA);
			add(WA);
			add(NT);
			add(Tas);
		}
	};
	@Transient
	public static final String NSW = "NSW";
	@Transient
	public static final String NT = "NT";
	@Transient
	public static final String Qld = "Qld";
	@Transient
	public static final String SA = "SA";
	private static final long serialVersionUID = 1L;
	@Transient
	public static final String Tas = "Tas";
	@Transient
	public static final String Vic = "Vic";
	@Transient
	public static final String WA = "WA";

	public static List<String> getAustralianStates() {
		return australianStates;
	}

	private String postCode;

	private String stato;

	public IndirizzoAU() {
		super();
		setPaese("Australia");
	}

	public IndirizzoAU(String indirizzoLinea1, String citta, String paese) {
		super(indirizzoLinea1, citta, paese);
	}

	public IndirizzoAU(String indirizzoLinea1, String citta, String stato,
			String paese) {
		this(indirizzoLinea1, citta, paese);
		this.stato = stato;
	}

	public IndirizzoAU(String indirizzoLinea1, String citta, String postCode,
			String stato, String paese) {
		this(indirizzoLinea1, citta, stato, paese);
		this.postCode = postCode;
	}

	public IndirizzoAU(String indirizzoLinea1, String indirizzoLinea2,
			String citta, String postCode, String stato, String paese) {
		this(indirizzoLinea1, citta, postCode, stato, paese);
		setIndirizzoLinea2(indirizzoLinea2);
	}

	@Override
	public boolean equals(Object o) {
		if (this == o)
			return true;
		if (o == null)
			return false;
		if (!(o instanceof IndirizzoAU))
			return false;
		
		IndirizzoAU ind = (IndirizzoAU) o;
		
		if (getId() != null && getId() != 0L)
			return getId().equals(ind.getId());
		
		if (getIndirizzoLinea1() != null) {
			if (!(getIndirizzoLinea1().equals(ind.getIndirizzoLinea1())))
				return false;
		} else if (ind.getIndirizzoLinea1() != null)
			return false;
		
		if (getIndirizzoLinea2() != null) {
			if (!(getIndirizzoLinea2().equals(ind.getIndirizzoLinea2())))
				return false;
		} else if (ind.getIndirizzoLinea2() != null)
			return false;
		
		if (getCitta() != null) {
			if (!(getCitta().equals(ind.getCitta())))
				return false;
		} else if (ind.getCitta() != null)
			return false;
		
		if (getPaese() != null) {
			if (!(getPaese().equals(ind.getPaese())))
				return false;
		} else if (ind.getPaese() != null)
			return false;
		
		if (getStato() != null) {
			if (!(getStato().equals(ind.getStato())))
				return false;
		} else if (ind.getStato() != null)
			return false;
		
		if (getPostCode() != null) {
			if (!(getPostCode().equals(ind.getPostCode())))
				return false;
		} else if (ind.getPostCode() != null)
			return false;
		
		return true;
	}

	@Override
	public String getPostCode() {
		return postCode;
	}

	@Override
	public String getStato() {
		return stato;
	}

	public void setPostCode(String postCode) {
		this.postCode = postCode;
	}

	@Override
	public void setStato(String stato) {
		this.stato = stato;
	}

}
